package util;

import com.fasterxml.jackson.databind.ObjectMapper;
import dao.OfficeObject;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;

import java.io.IOException;

/**
 * description
 * created by A on 2022/4/11
 */
public class EsUtil {
    public static RestHighLevelClient client;
    public EsUtil(String host,int port){
        client=EsOperserver.getClient(host,port);
    }
    /**
     *  新增&更新文档
     * @param index 添加到的索引
     * @param uuid  唯一标识
     * @param content 文档内容
     * @return 返回结果信息，如果是创建，返回值为:created。如果是更新，返回值为:updated
     */
    public String createDoc(String index,String uuid,String path,String content) throws IOException {
        //新增文档-请求对象
        IndexRequest request=new IndexRequest();

        //设置添加到的索引及唯一标识
        request.index(index).id(uuid);
        //创建数据对象
        OfficeObject officeObject=new OfficeObject();
        officeObject.setDocPath(path);
        officeObject.setDocContent(content);
        //将javabean转换为JSON
        ObjectMapper objectMapper = new ObjectMapper();
        String productJson = objectMapper.writeValueAsString(officeObject);
        //为请求对象添加一条数据，格式为JSON对象
        request.source(productJson, XContentType.JSON);
        //客户端发送请求，获取对象
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        //返回结果信息
        return response.getResult().getLowercase();
    }

    /**
     * 删除一个文档
     * @param index  索引名称
     * @param id
     * @return 返回一个结果值，如果成功，该值为deleted，如果失败，该值为not_found
     * @throws IOException
     */
    public  String  deleteDoc(String index,String id) throws IOException {
        DeleteRequest request = new DeleteRequest().index(index).id(id);
        DeleteResponse delete = client.delete(request, RequestOptions.DEFAULT);

        return delete.getResult().getLowercase();
    }

    public static void main(String[] args) throws IOException {
        EsUtil es=new EsUtil("10.7.221.29",9200);

        String doc = es.createDoc("officefile", "r0b4782c-8dcb-41c1-a734-b1c977cb1411","a\\b\\c\\hello.txt","受冷空气影响，预计，12月17日08时至18日20时，我国中东部大部地区将降温6~8℃，其中，安徽东南部、浙江大部等地降温幅度可达12℃以上。12月18日早晨最低气温0℃线位于浙江南部至四川盆地北部一带。内蒙古、东北地区南部、华北、山东半岛等地有4~5级偏北风，阵风6~8级；我国东部和南部海域将先后出现7~9级、阵风10级以上的大风。");
        System.out.println(doc);
        // String officefile = es.deleteDoc("officefile", "990b4782c-8dcb-41c1-a734-b1c977cb1411");
        //System.out.println(officefile);

        EsUtil.client.close();
    }




}
